#pragma once

using namespace Microsoft::WRL;
using namespace Windows::Foundation;
using namespace Windows::UI::Core;


class Shape
{
public:	
	Shape();
	~Shape();
	
	char* Name;											// The name of the shape
	
	ID3D11Buffer*			VertexBuffer;               // cube vertex buffer
	ID3D11Buffer*			IndexBuffer;                // cube index buffer
	unsigned int			VertexStride;
	unsigned int			VertexOffset;
	unsigned int			IndexCount;

	DXGI_FORMAT				IndexFormat;
	D3D_PRIMITIVE_TOPOLOGY	VertexTopology;

	

	void Render(
		_In_ ID3D11DeviceContext1* direct3dContext,
		_In_ ID3D11Buffer* constantBuffer,
		_In_ ID3D11InputLayout* vertexInputLayout,
		_In_ ID3D11VertexShader* vertexShader,
        _In_ ID3D11PixelShader* pixelShader,
		_In_ ID3D11ShaderResourceView* textureSRV,
		_In_ ID3D11SamplerState* textureSampler);



	void Render(
		_In_ ID3D11DeviceContext1* direct3dContext,
	
		_In_ ID3D11Buffer* constantBuffer,

		_In_ ID3D11InputLayout* vertexInputLayout,
		unsigned int vertexStride,
		unsigned int vertexOffset,
		unsigned int indexCount,
		_In_ ID3D11Buffer* vertexBuffer,
		_In_ ID3D11Buffer* indexBuffer,
		DXGI_FORMAT indexFormat,
		D3D_PRIMITIVE_TOPOLOGY vertexTopology,
		_In_ ID3D11VertexShader* vertexShader,
        _In_ ID3D11PixelShader* pixelShader,
		_In_ ID3D11ShaderResourceView* textureSRV,
		_In_ ID3D11SamplerState* textureSampler);

};